/**
 * 用户相关数据维护和管理模块(token,登录信息)
 */
import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, getUserInfo, getUserDetailById } from '../../api/user.js'
export default {
  namespaced: true,
  // 存和定义用户数据
  state: {
    token: getToken() || '',
    userInfo: {}
  },
  // 修改state中的数据
  mutations: {
    updateToken (state, payload) {
      state.token = payload
      setToken(payload)
    },
    delToken (state) {
      state.token = ''
      removeToken()
    },
    // 存用户的信息
    updateUserInfo (state, payload) {
      state.userInfo = payload
    },
    // 删除用户信息
    delUserInfo (state, payload) {
      state.userInfo = {}
    }
  },
  // 获取后台数据(异步)
  actions: {
    // 调用登录接口=>获取token
    async loginAction ({ commit }, payload) {
      const token = await login(payload)
      commit('updateToken', token)
    },
    async userInfoAction (ctx) {
      // 1.用户基本信息
      const res = await getUserInfo()
      console.log(res)
      // 2.获取用户头像
      const avatar = await getUserDetailById(res.userId)
      console.log('登录人信息', res)
      ctx.commit('updateUserInfo', { ...res, ...avatar })
      console.log(avatar)
    },
    // 退出登录=>清除本地状态数据
    logoutAction (ctx) {
      /**
       * 1.如果有退出接口=>调用
       * 2.清除本地存储的数据
      */
      ctx.commit('delToken')
      ctx.commit('delUserInfo')
    }
  }

}
